VaR Simulación Histórica - Método no paramétrico
------------------------------------------------
No asume que las rentabilidades siguen una distribución normal por lo
que es posible reflejar la distribución de rentabilidades.
En vez de utilizar la información histórica para calcular volatilidades
y covarianzas de los activos, con este método se utilizan las pérdidas y
ganancias que se habría experimentado durante un período de tiempo
determinado.
Se analiza cuáles habrían sido las rentabilidades hipotéticas en el
pasado si se hubiera tenido el activo o el portafolio actual. Con las
pérdidas experimentadas en el pasado se puede concluir sobre el riesgo
esperado a partir de este momento.
Con las pérdidas y ganancias hipotéticas para cada día del período de
observación, se genera la distribución esperada (distribución empírica)
y se toman los percentiles de la distribución de rentabilidades como
medida directa del VaR. **Esta distribución no se basa en la hipótesis
de normalidad.**
Lo ocurrido en el período de la muestra de rentabilidades observadas
recoge toda la información suficiente para estimar el riesgo futuro.
**Recomendación: mínimo datos de un año.**
Se parte del supuesto de que en el futuro los mercados se comportarán de
forma parecida al pasado.
Se puede considerar período de inestabilidad en los mercados.
Los resultados del análisis pueden variar considerablemente dependiendo
de la elección de la longitud de la muestra y la frecuencia de
observaciones utilizadas.
**No es posible extrapolar los resultados del análisis a otros
horizontes temporales. Es necesario volver a calcular los percentiles de
la distribución de rentabilidades y llevar a cabo el análisis de nuevo
para diferentes plazos.**
Importar datos
~~~~~~~~~~~~~~
.. code:: r
datos = read.csv("Tres acciones.csv", sep = ";", header = T)
.. code:: r
head(datos)
tail(datos)
.. raw:: html
A data.frame: 6 × 4
| Fecha | ECO | PFBCOLOM | ISA |
| <fct> | <int> | <int> | <int> |
1 | 11/01/2008 | 1995 | 16800 | 7000 |
2 | 14/01/2008 | 1960 | 16380 | 6810 |
3 | 15/01/2008 | 1905 | 15880 | 6890 |
4 | 16/01/2008 | 1860 | 15980 | 6710 |
5 | 17/01/2008 | 1755 | 15900 | 6590 |
6 | 18/01/2008 | 1725 | 15340 | 6320 |
.. raw:: html
A data.frame: 6 × 4
| Fecha | ECO | PFBCOLOM | ISA |
| <fct> | <int> | <int> | <int> |
2811 | 22/07/2019 | 3030 | 41260 | 19000 |
2812 | 23/07/2019 | 3015 | 42020 | 19160 |
2813 | 24/07/2019 | 3000 | 41280 | 19300 |
2814 | 25/07/2019 | 3000 | 41300 | 19800 |
2815 | 26/07/2019 | 2980 | 41160 | 19200 |
2816 | 29/07/2019 | 2980 | 41300 | 18960 |
Matriz de precios
~~~~~~~~~~~~~~~~~
.. code:: r
precios=datos[,-1]
precios = ts(precios)
Nombres de las acciones
~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
nombres = colnames(precios)
nombres
.. raw:: html
- 'ECO'
- 'PFBCOLOM'
- 'ISA'
Matriz de rendimientos
~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
rendimientos = diff(log(precios))
Cantidad de acciones
~~~~~~~~~~~~~~~~~~~~
.. code:: r
acciones = ncol(precios)
acciones
.. raw:: html
3
Cantidad de rendimientos
~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
numero_rendimientos = nrow(rendimientos)
numero_rendimientos
.. raw:: html
2815
VaR simulación historica
~~~~~~~~~~~~~~~~~~~~~~~~
VaR diario con un nivel de confianza del 95% ``NC = 0.95`` ####
Proporciones de inversión. ``proporciones=c(0.25, 0.4, 0.35)``
ECO: 25%
PFBCOLOM: 40%
ISA: 35%
.. code:: r
NC = 0.95
proporciones = c(0.25, 0.4, 0.35)
valor_portafolio = 100000000
valor_mercado_acciones = proporciones*valor_portafolio
Con un nivel de confianza del 95%, se debe esoger el rendimiento que se
encuentra en el 5% de los rendimientos más bajos.
Se usa la función ``quantile()`` para hallar el percentil del 95%.
.. code:: r
VaR_individuales_SH_percentil = vector()
for(i in 1:acciones){
VaR_individuales_SH_percentil[i] = abs(quantile(rendimientos[,i], 1 - NC)*valor_mercado_acciones[i])
}
VaR_individuales_SH_percentil
.. raw:: html
- 725237.852255347
- 979379.265539478
- 862800.178664044
Rendimientos del portafolio de inversión.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
rendimientos_portafolio = vector()
for(i in 1:numero_rendimientos){
rendimientos_portafolio[i] = sum(rendimientos[i,]*proporciones)
}
VaR portafolio de inversión
~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
VaR_portafolio_SH_percentil = abs(quantile(rendimientos_portafolio, 1 - NC)*valor_portafolio)
VaR_portafolio_SH_percentil
.. raw:: html
5%: 1892558.8139104